home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 10 / 9 / DISK1095.ZIP / PAYROLL.PRG < prev    next >
Text File  |  1980-01-01  |  8KB  |  228 lines

  1. *
  2. * PAYROLL
  3. * PREPARE PAYROLL TRANSACTIONS WITH OPERATOR INPUT OF WITHHOLDING AMOUNT
  4. SET HEADING OFF
  5. SET SAFETY OFF
  6. SET STATUS OFF
  7. CLEAR
  8. CLEAR ALL
  9. SET TALK OFF
  10. SET BELL OFF
  11. STORE SPACE(80) TO BLANK
  12. @ 1,22 SAY "SMITH'S BIKEWORKS INFORMATION SYSTEM"
  13. @ 3,12 SAY ">> Human Resources Management System Payroll Processing <<"
  14. @ 5,29 SAY "Today's Date: "
  15. ?? DATE()
  16. STORE "PERSONNL" TO FILENAME
  17. STORE "PSSAN   " TO INDEX
  18. STORE "          " TO REF
  19. * SOCIAL SECURITY RATE PAID BY EMPLOYEE. ALTER IF RATE CHANGES
  20. STORE 6.70 TO SS_WKRATE
  21. * MAXIMUM EARNINGS ON WHICH SOCIAL SECURITY IS PAID
  22. STORE 34200.00 TO SS_MAX
  23. * SOCIAL SECURITY RATE PAID BY EMPLOYER. ALTER IF RATE CHANGES
  24. STORE 6.70 TO SS_EMRATE
  25. * UNEMPLOYMENT INSURANCE (EMPLOYERS LIABILITY) RATE. ALTER IF RATE CHANGES
  26. * RATES ARE FEDERAL EXCESS OVER STATE RATE, AND THE STATE RATE
  27. STORE  .70 TO UI_FED
  28. STORE 2.70 TO UI_STATE
  29. * MAXIMUM EARNINGS ON WHICH UNEMPLOYMENT TAX IS COLLECTED
  30. STORE 6000.00 TO UI_MAX
  31. @ 7,1 SAY "Run Payroll From The FILE       " GET FILENAME
  32. @ 7,50 SAY "INDEX " GET INDEX
  33. @ 9,1 SAY "Payables Will be Output to PAYFILE"
  34. @ 11,1 SAY "Social Security -- Employee Rate " GET SS_WKRATE
  35. @ 11,50 SAY "Employer Rate " GET SS_EMRATE
  36. @ 13,1 SAY "Maximum Earnings on Which Social Security is Paid " GET SS_MAX
  37. @ 15,1 SAY "Unemployment Ins -- Fed Rate " GET UI_FED
  38. @ 15,45 SAY "State Rate " GET UI_STATE
  39. @ 17,1 SAY "Max Earnings for Unemployment Insurance " GET UI_MAX
  40. STORE " " TO DUMMY
  41. @ 21,1 SAY ;
  42. "REPLACE VALUES AT CURSOR, OR JUST PRESS ENTER IF CURRENT PAYROLL DESCRIPTION"
  43. @ 22,1 SAY ;
  44. "IS O.K.  'M' HERE RETURNS TO MENU, ANY OTHER KEY STARTS PAYROLL INPUT =>";
  45. GET DUMMY
  46. READ
  47. STORE UPPER(DUMMY) TO DUMMY
  48. IF DUMMY="M"
  49.    RETURN
  50. ENDIF
  51. * CONVERT PERCENTAGES TO DECIMAL FRACTIONS
  52. STORE SS_WKRATE*.01 TO SS_WKRATE
  53. STORE SS_EMRATE*.01 TO SS_EMRATE
  54. STORE UI_FED*.01 TO UI_FED
  55. STORE UI_STATE*.01 TO UI_STATE
  56. * OPEN FILE USING INDEX SPECIFIED ABOVE, OR NO INDEX IF IT IS BLANK
  57. IF INDEX="  "
  58.    USE &FILENAME
  59. ELSE
  60.    USE &FILENAME INDEX &INDEX
  61. ENDIF
  62. * OUTPUT PAYROLL AMOUNTS AS ACCOUNTS PAYABLE TO PAYFILE, INDEXED ON ACCT_NUM
  63. SELECT B
  64. USE PAYFILE INDEX PFACTNO
  65. * PRESENT RECORDS FOR WHICH HIRED VARIABLE IS TRUE, AND REC NOT DELETED
  66. SELECT A
  67. GO TOP
  68. STORE " " TO ACTION
  69. DO WHILE ACTION<>"M"
  70.    IF HIRED.AND..NOT.DELETE()
  71. * CLEAR DISPLAY
  72.    STORE 7 TO COUNT
  73.    DO WHILE COUNT<24
  74.       @ COUNT,0 SAY BLANK
  75.       STORE COUNT+1 TO COUNT
  76.    ENDDO
  77.    DO WHILE ACTION<>"R".AND.ACTION<>"M".AND.ACTION<>"S"
  78.       STORE " " TO ACTION
  79.       STORE 0.00 TO REG_HOURS
  80.       STORE 0.00 TO OVT_HOURS
  81.       STORE 0.00 TO REG_PAY
  82.       STORE 0.00 TO OVT_PAY
  83.       STORE 0.00 TO GROSS_PAY
  84.       STORE 0.00 TO WTH_FEDTAX
  85.       STORE 0.00 TO WKR_SSAN
  86.       STORE 0.00 TO EMP_SSAN
  87.       STORE 0.00 TO EMP_UIFED
  88.       STORE 0.00 TO EMP_UIST
  89.       STORE 0.00 TO YTDGP_TMP
  90.       STORE 0.00 TO YTDWTH_TMP
  91.       STORE 0.00 TO YTDSS_TMP
  92.       @ 7,1 SAY "Employee -- Name :"
  93.       ?? TRIM(A->LAST_NAME)+","+TRIM(A->FIRST_NAME)+" "+A->INITIAL
  94.       @ 7,60 SAY "SSAN :"
  95.       ?? A->SSAN
  96.       @ 9,1 SAY "Hourly ? :"
  97.       ?? A->HOURLY
  98.       @ 9,20 SAY "Rate/Salary :"
  99.       ?? A->PAY_RATE
  100.       @ 9,45 SAY "Overtime Factor :"
  101.       ?? A->OVER_TIME
  102.       @ 11,1 SAY "Hours Worked (Hourly) -- Regular " GET REG_HOURS
  103.       @ 11,55 SAY "Overtime " GET OVT_HOURS
  104. * INPUT TIME CARD DATA FOR HOURLY EMPLOYEES, FIXED CALCS FOR SALARIED
  105.       IF A->HOURLY
  106.          READ
  107.          STORE REG_HOURS*A->PAY_RATE TO REG_PAY
  108.          STORE OVT_HOURS*A->PAY_RATE*A->OVER_TIME TO OVT_PAY
  109.       ELSE
  110.          CLEAR GETS
  111.          STORE A->PAY_RATE TO REG_PAY
  112.       ENDIF
  113.       STORE REG_PAY+OVT_PAY TO GROSS_PAY
  114.       @ 13,1 SAY "Pay -- Regular $"
  115.       ?? STR(REG_PAY+.005,8,2)
  116.       @ 13,35 SAY "Overtime $"
  117.       ?? STR(OVT_PAY+.005,8,2)
  118.       @ 13,61 SAY "Gross $"
  119.       ?? STR(GROSS_PAY+.005,8,2)
  120.       @ 15,1 SAY "Input Withholding Amount For"
  121.       ?? A->EXEMP,"Exemptions", A->MAR_STATUS,"Marital Status "
  122.       @ 15,65 GET WTH_FEDTAX
  123.       READ
  124. * STORE YEAR TO DATE GROSS PAY TEMPORARILY
  125.       STORE YTD_PAY+GROSS_PAY TO YTDGP_TMP
  126. * COMPUTE SOCIAL SECURITY WITHHOLDING
  127.       IF YTD_PAY-GROSS_PAY<SS_MAX
  128.          IF YTD_PAY<SS_MAX
  129.             STORE SS_WKRATE*GROSS_PAY TO WKR_SSAN
  130.             STORE SS_EMRATE*GROSS_PAY TO EMP_SSAN
  131.          ELSE
  132.             STORE SS_WKRATE*(GROSS_PAY-SS_MAX) TO WKR_SSAN
  133.             STORE SS_EMRATE*(GROSS_PAY-SS_MAX) TO EMP_SSAN
  134.          ENDIF
  135.       ENDIF
  136. * STORE WITHHOLDING AND SOCIAL SECURITY TEMPORARILY
  137.       STORE YTD_WTHHLD+WTH_FEDTAX TO YTDWTH_TMP
  138.       STORE YTD_FICA+WKR_SSAN TO YTDSS_TMP
  139. * COMPUTE EMPLOYER'S CONTRIBUTION TO UNEMPLOYMENT INSURANCE
  140.       IF YTD_PAY-GROSS_PAY<UI_MAX
  141.          IF YTD_PAY<UI_MAX
  142.             STORE UI_FED*GROSS_PAY TO EMP_UIFED
  143.             STORE UI_STATE*GROSS_PAY TO EMP_UIST
  144.          ELSE
  145.             STORE UI_FED*(GROSS_PAY-UI_MAX) TO EMP_UIFED
  146.             STORE UI_STATE*(GROSS_PAY-UI_MAX) TO EMP_UIST
  147.          ENDIF
  148.       ENDIF
  149.       STORE GROSS_PAY-WTH_FEDTAX-WKR_SSAN TO NET_PAY
  150.       @ 17,0 SAY " "
  151.       ?? "Social Security -- Employee  $",STR(WKR_SSAN+.005,8,2),;
  152.       "     Employer  $",STR(EMP_SSAN+.005,8,2)
  153.       ? " Net Pay  $",STR(NET_PAY+.005,8,2),"    Fed. Unempl. Ins.  $",;
  154.       STR(EMP_UIFED+.005,8,2),"   State  $",STR(EMP_UIST+.005,8,2)
  155.       @ 20,0 SAY " "
  156.       ?? "YTD --Pay  $",STR(YTDGP_TMP+.005,8,2),"  Withholding  $",;
  157.       STR(YTDWTH_TMP+.005,8,2),"  FICA  $",STR(YTDSS_TMP+.005,8,2)
  158.       @ 22,1 SAY "PRESS 'R' TO RECORD PAYROLL DATA, 'M' TO RETURN TO MENU"
  159.       @ 23,1 SAY "'S' TO SKIP. ANY OTHER KEY ALLOWS RE-ENTRY OF ALL DATA => ";
  160.       GET ACTION
  161.       READ
  162.       STORE UPPER(ACTION) TO ACTION
  163.    ENDDO
  164. * IF ACTION IS 'R' GENERATE ACCOUNTING TRANSACTIONS
  165.    IF ACTION='M'
  166.       LOOP
  167.    ENDIF
  168.    IF ACTION='R'
  169. * STORE YTD VALUES IN EMPLOYEE RECORD
  170.       REPLACE YTD_PAY WITH YTDGP_TMP
  171.       REPLACE YTD_WTHHLD WITH YTDWTH_TMP
  172.       REPLACE YTD_FICA WITH YTDSS_TMP
  173. * GENERATE TRANSACTIONS FOR PAYABLES FILE
  174. * PAYCHECK FIRST. INCLUDES AMOUNTS FOR EACH PAY CATEGORY
  175.       SELECT B
  176.       APPEND BLANK
  177.       REPLACE ACCT_NUM WITH 31.00, DATE_RECD WITH DATE(), DATE_DUE ;
  178.       WITH DATE(), AMOUNT WITH NET_PAY
  179.       REPLACE PAYEE WITH A->SSAN+" "+TRIM(A->LAST_NAME)+","+TRIM(A->FIRST_NAME);
  180.       +" "+A->INITIAL
  181. * STORE ALL PAY AMOUNTS SO ACCOUNTING SYSTEM COULD OUTPUT THEM
  182.       REPLACE REFERENCE WITH STR(REG_PAY,8,2)+STR(OVT_PAY,8,2)+;
  183.       STR(GROSS_PAY,8,2)+STR(WTH_FEDTAX,8,2)+STR(WKR_SSAN,8,2)+;
  184.       STR(NET_PAY,8,2)+STR(YTDGP_TMP,8,2)+STR(YTDWTH_TMP,8,2)+;
  185.       STR(YTDSS_TMP,8,2)
  186. * WITHHOLDING TAX TRANSACTION
  187.       APPEND BLANK
  188.       REPLACE ACCT_NUM WITH 52.00, DATE_RECD WITH DATE(), DATE_DUE ;
  189.       WITH DATE(), AMOUNT WITH WTH_FEDTAX
  190.       REPLACE PAYEE WITH "INTERNAL REVENUE SERVICE"
  191.       REPLACE REFERENCE WITH A->SSAN+" Withholding "+DTOC(DATE())
  192. * SOCIAL SECURITY -- EMPLOYEE
  193.       APPEND BLANK
  194.       REPLACE ACCT_NUM WITH 23.10, DATE_RECD WITH DATE(), DATE_DUE;
  195.       WITH DATE(), AMOUNT WITH WKR_SSAN
  196.       REPLACE PAYEE WITH "INTERNAL REVENUE SERVICE"
  197.       REPLACE REFERENCE WITH A->SSAN+" Employee FICA "+DTOC(DATE())
  198. * SOCIAL SECURITY -- EMPLOYER
  199.       APPEND BLANK
  200.       REPLACE ACCT_NUM WITH 23.00, DATE_RECD WITH DATE(), DATE_DUE;
  201.       WITH DATE(), AMOUNT WITH EMP_SSAN
  202.       REPLACE REFERENCE WITH A->SSAN+" Employer FICA "+DTOC(DATE())
  203. * UNEMPLOYMENT INSURANCE -- FEDERAL
  204.       APPEND BLANK
  205.       REPLACE ACCT_NUM WITH 24.10, DATE_RECD WITH DATE(), DATE_DUE;
  206.       WITH DATE(), AMOUNT WITH EMP_UIFED
  207.       REPLACE REFERENCE WITH A->SSAN+" Unempl. Ins. Fed "+DTOC(DATE())
  208. * UNEMPLOYMENT INSURANCE -- STATE
  209.       APPEND BLANK
  210.       REPLACE ACCT_NUM WITH 24.00, DATE_RECD WITH DATE(), DATE_DUE;
  211.       WITH DATE(), AMOUNT WITH EMP_UIST
  212.       REPLACE REFERENCE WITH A->SSAN+" Unempl. Ins. State "+DTOC(DATE())
  213.       SELECT A
  214.    ENDIF 'R'
  215.    ENDIF 'HIRED'
  216. * NEXT RECORD
  217.    STORE RECNO() TO RECNOW
  218.    SKIP 1
  219. * IF RECORD NUMBER DOESN'T CHANGE, THIS IS THE END OF FILE
  220.    IF EOF()
  221.       STORE "M" TO ACTION
  222.    ELSE
  223.       STORE " " TO ACTION
  224.    ENDIF
  225. ENDDO
  226. CLEAR
  227. RETURN
  228.